--铸造累加脚本
-- 缓存kye
local key = KEYS[1]
-- 发行总数
local totalQuantity = tonumber(ARGV[1])
-- 默认已铸造数（用户传值）
local defCastNum = tonumber(ARGV[2])
-- 库存过期时间（秒）
local timeout = tonumber(ARGV[3])

-- 查询redis中的库存总数
local castNum = redis.call("get", key)

-- redis无库存默认
if not castNum then
    castNum = defCastNum;
end

-- 铸造累计
castNum = castNum + 1

-- 判断是否超发
if(castNum > totalQuantity)
then
    return false;
end

-- 正常铸造累加
redis.call("set", key, castNum)
redis.call("expire", key, timeout)

return true
